//1 Rust 中每一个引用都是有生命周期，也就是引用保持有效的作用域，大部分时候，生命周期是隐含并可以推断的，正如大部分时候类型可以推断一样

//2 生命周期的主要目标是避免悬垂引用

//3 rust 编译器使用借用检查器来检查生命周期是否有效

fn main() {
    let r;
    {
        let x = 5;
        r = &x;
    }

    println!("Hello, world!");
}
